package com.atguigu.gulimali.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**1).整合mybatis-plus导入依赖
 *
 * 2).配置
 *   配置数据源
 *     一。导入驱动
 *     二。在application.yml中配置相关信息
 *   配置mybatis-plus相关信息
 *     一。使用@mapperScan
 *     二。告诉Mybatis-plus
 *  2。逻辑删除
 *    1.配置全局的逻辑删除规则
 *    2.配置逻辑删除的组件bean
 *    3.给Bean添加逻辑删除注解@TableLogic
 *
 *  3、JSR303
 *     1)、给Bean添加校验注解: javax. val idation. constraints,并定义自己的message提示
 *     2)、开启校验功能@Valid
 *         效果:校验错误以后会有默认的响应;
 *     3)、给校验的bean后紧跟-一个BindingResult, 就可以获取到校验的结果
 *     4)、分组校验(多场景的复杂校验)
 *         1) @NotBlank(message_ = "品牌名必须提交", groups = {AddGroup. class, UpdateGroup. class})
 *           给校验注解标注什么情祝需要进行校验
 *         2)、@Val idated( {AddGroup. class})
 *         3)、默认没有指定分组的校验注解@NotBlank，在分组校验情况@Val idated( {AddGroup. class})下不生
 *     5)、自定义校验
 *        1.编写一个自定义的校验注解
 *        2.编写一个自定义的校验器
 *        3.关联自定义校验器的自定义校验注解
 *  4.统一的异常处理
 * @ControllerAdvice
 * 1）。编写异常处理类，使用@controllerAdvice
 * 2）。使用@Exceptionhandler标注方法可以处理的异常
 */
@EnableFeignClients(basePackages = "com.atguigu.gulimali.product.feigh")  //开启远程调用
@EnableDiscoveryClient
@MapperScan("com.atguigu.gulimali.product.dao")
@SpringBootApplication
 public class GulimaliProductApplication {

    public static void main(String[] args) {

        SpringApplication.run(GulimaliProductApplication.class, args);
    }

}
